//kurs/wp-content/plugins/courses/js/courses_service.js

function addTab(selector, index) {

    var myTabs = jQuery(selector);

        if (index == undefined)
                index = myTabs.tabs('length');

        tabId = '#tab' + (new Date).getTime();

        myTabs.tabs('add', tabId, index);
        //jQuery(tabId).load('new_tab_data.txt');
    myTabs.tabs('enable',index);
    return tabId;
}

function removeTab(selector, index) {
        var myTabs = jQuery(selector);

        if (index == undefined || index.length == 0)
                index = myTabs.tabs('length') - 1;
        else
                index = parseInt(index);

        myTabs.tabs('remove', index)
}

function dekanat(vyz){
    var hr_lock,nles,curs,less,obj;
    curs = vyz.cur;          //выясняем параметры вызова: какой курс,урок и новый ли урок или продолжить загрузку в существующий
    less = vyz.les;
    nles = vyz.nle;

        if(parseInt(nles)==1)do_lesson();//если '1' - значит новый урок

        hr_lock = base_url + '?aj=1&op=ls&cur='+curs + '&les='+ less;
    jQuery.getJSON(hr_lock, function(response) {
        for (var i = 0; i < response.length; i++) {

                    obj = response[i];

            switch (obj['ref']) {


            case "les":
                createLesson(response)
            }

        }

    });

}

function createLesson(ar){

    for (var k = 0; k < ar.length; k++) {
           var trobj = ar[k];

        for (var trkey in trobj) {

             switch (trkey) {
              case "children":

                    createLesson(trobj[trkey]);

              break;

              case "ref":

                       switch (trobj['ref']){
                           case "scr":

                                if(jQuery('#memscript').length>0)turnoff_script('memscript');
                                turnon_script(trobj['dat'],'0');
                                   
                            break;

                            case "htm":
                                var tabid = addTab('#memlesson');
                                jQuery(tabid).append(trobj['dat']);
                                if(trobj['mat']!=undefined)jQuery(tabid).append('<div class="hdn">' + trobj['mat'] + '</div>');
                              break;
                        }//конец switch для ref
    
                break;
                    }//конец общего switch
        }

    }

}

function do_lesson(){
    var nht;
    jQuery('#infocourse').css('display','none');
    jQuery('#memlesson').tabs('destroy');
    jQuery('#memlesson').empty();

    //<li style="display: list-item;"><a href="#tab1">1</a></li><div id="tab1"></div>
    nht = '<ul><li style="display: list-item;"><a href="#">«</a></li></ul>';


    jQuery('#memlesson').append(nht);
                               //selected:1,
    jQuery("#memlesson").tabs({select: function(event, ui){}});
    //console.log(ui.tab +  " ui.tab "  + ui.index  + "  ui.index");}
    jQuery("#memlesson").tabs("paging");

    
    jQuery('#lessonmain').css('display','block');
 //   jQuery('.ui-tab-panel').each(function(){
}
/*
<div id="maincourse">
   <div id="infocourse">
    <table><tbody>
    <tr><td><a href="#" onclick="javascript:dekanat({cur:1,les:1,nle:1});">Вводное занятие</a></td><td>Ссылка на каст или на запись</td></tr>
    <tr><td><a href="#" onclick="javascript:dekanat({cur:1,les:2,nle:1});">Создание системы опорных образов</a></td><td>Ссылка на каст или на запись</td></tr>
    <tr><td><a href="#" onclick="javascript:dekanat({cur:1,les:3,nle:1});">Тренинг запоминания</a></td><td>Ссылка на каст или на запись</td></tr>
    <tr><td><a href="#"  onclick="javascript:dekanat({cur:1,les:4,nle:1});">Конветрация данных для запоминания</a></td><td>Ссылка на каст или на запись</td></tr>
    </tbody></table>
  </div>
  <div id="lessonmain" style="display:none;">

      <div style="width:100%;" id="memlesson">

</div>
  </div>
</div>
        */


//после построения текста можно подключить этот скрипт в броузер




  function turnon_script(scr_txt,scr_src){
  var newScript;
  newScript = document.createElement("script");
  newScript.type = "text/javascript";
  newScript.id = "memscript";

  if(scr_src!='0'){

       newScript.src =  scr_src;
       //var first = document.getElementsByTagName("head")[0].firstChild;
       //document.getElementsByTagName("head")[0].insertBefore(newScript, first);
  }else {
  //alert(newScript.id + ' ' + scr_txt.length + '  ' + scr_src)

   if(scr_txt.length!=0)   newScript.text = scr_txt;
    }
   //document.getElementsByTagName('head')[0].appendChild(newScript);

      jQuery('head').prepend(newScript);
    }




  function turnoff_script(scr_id){
    var remScript;
  remScript = jQuery('#' + scr_id);
  //document.getElementsByTagName('head')[0].removeChild(remScript);
    jQuery('head').remove(remScript);

  }

function trim(s){return rtrim(ltrim(s));}
function ltrim(s){return s.replace(/^\s+/, '');}
function rtrim(s){return s.replace(/\s+$/, '');}

 //обработчик json-строки для построения таблицы. Принимает Id элемента в который нужно поместить таблицу и массивс таблицей
function table_html(rod,obj){
    var stk='',nr,akey,instr='',ti,tr;
    if(obj.cols == undefined)obj.cols = {numcols:1};
    if(obj.rows == undefined)obj.rows = {numrows:1};
    if(obj.tabatr!=undefined){if(obj.tabatr.id!=undefined){ti=obj.tabatr.id;
     }else{ti='tbl_'+randomNumber(1,15000000);}}else{ti='tbl_'+randomNumber(1,15000000);}
  stk += '<table id="'+ti + '">';
 for(var t=0;t<obj.cols.numcols;t++){stk += '<col>';}

 stk += '<tbody id=tb_' + ti + '>';
    
        for(t=0;t<obj.rows.numrows;t++){stk += '<tr>';for(var tt=0;tt<obj.cols.numcols;tt++){stk+='<td></td>';}
            stk += '</tr>';
        }
    stk +='</tbody></table>';
   rod.append(stk);
     var tbl = jQuery('#'+ti);
     var tbd = tbl.children('tbody');
 if(obj.tabatr!=undefined){for(akey in obj.tabatr){if(akey!='id'){tbl.attr(akey,obj.tabatr[akey]);}}}
 if(obj.tabstyl!=undefined){for(akey in obj.tabstyl){tbl.css(akey,obj.tabstyl[akey]);}}
 if(obj.colstyl!=undefined){for(var h=0; h<obj.cols.numcols;h++){instr = {};for(akey in obj.colstyl[h]){instr[akey] = obj.colstyl[h][akey];}tbl.children('col').eq(h).css(instr);}}
 if(obj.tbodatr!=undefined){for(akey in obj.tbodatr){if(akey!='id'){tbd.attr(akey,obj.tbodatr[akey]);}}}

 nr = obj.rows.numrows;
         for (var k=0;k<nr;k++){
tr = tbd.children('tr').eq(k);

if(obj.allrowatr!=undefined){for(akey in obj.allrowatr){tr.css(akey,obj.allrowatr[akey]);}}
  if(obj.rowatr!=undefined){if(obj.rowatr[k]!=undefined){for(akey in obj.rowatr[k]){tr.attr(akey,obj.rowatr[k][akey]);}}}
 if(obj.allrowsty!=undefined){instr={};for(akey in obj.allrowsty){instr[akey] = obj.allrowsty[akey];}tr.css(instr);}
 if(obj.rowsty!=undefined){if(obj.rowsty[k]!=undefined){for(akey in obj.rowsty[k]){tr.css(akey,obj.rowsty[k][akey]);}}}
 for (var c=0;c<obj.cols.numcols;c++){

  if(obj.allcellatr!=undefined){for(akey in obj.allcellatr){tr.children('td').eq(c).attr(akey,obj.allcellatr[akey]);}}
  if(obj.cellatr!=undefined){
      if(obj.cellatr[c]!=undefined){
          for(akey in obj.cellatr[c]){
              alert(akey + '  ' + obj.cellatr[c][akey]);
              tr.children('td').eq(c).attr(akey,obj.cellatr[c][akey]);}}}
  if(obj.allcellsty!=undefined){for(akey in obj.allcellsty){tr.children('td').eq(c).css(akey,obj.allcellsty[akey]);}}
  if(obj.cellsty!=undefined){
      if(obj.cellsty[c]!=undefined){
          for(akey in obj.cellsty[c]){

              tr.children('td').eq(c).css(akey,obj.cellsty[c][akey]);}}}

          }

         }

}


function process_material_string(){
   var str,mfk;

    str = 'mfk=' + jQuery('#modial').find('textarea').val();

      eval(str);
    jQuery('#close_modial').trigger('click');

   for(var i=0; i<mfk.length;i++){

     for(var kk in mfk[i]){
             switch (kk){
         case 'html':

             build_html_from_string(mfk[i][kk]);
         break;
         case 'mat':
                  alert('Это материалы');
         break;

         case 'table':
         break;


         }
        }
      }
   }


//построение html из json-строки
function build_html_from_string(cob){
    var pp,crel,item;
       for(var mm=0;mm<cob.length;mm++){
              pp=-1;
        for(var uu in cob[mm]){
            item = cob[mm][uu];
         if(pp==mm){
             switch (uu.substr(0,3)){
                 case 'css':jQuery(crel).css(uu.substr(4),item);break;
                 case 'atr':jQuery(crel).attr(uu.substr(4),item); break;
                 case 'htm':jQuery(crel).html(item);
                 //case 'par':jQuery('#'+ item).append(crel)break;
             }
        }else{
             if(uu=='tag'){crel = document.createElement(item);
             }else{crel = document.createElement(cob[mm]['tag']);}

             if(cob[mm]['parent']!=undefined){
                jQuery('#'+ cob[mm]['parent']).append(crel);
                 }else{
                 jQuery('body').append(crel);
             }
         pp=mm;
         }
     }
  }
}





//генерация случайных чисел в диапазоне от m до n:
function randomNumber (m,n){
  m = parseInt(m);n = parseInt(n);
  return Math.floor( Math.random() * (n - m + 1) ) + m;
}

/* Array.shuffle( deep ) - перемешать элементы массива случайным образом
deep - необязательный аргумент логического типа, указывающий на то,
       нужно ли рекурсивно обрабатывать вложенные массивы;
       по умолчанию false (не обрабатывать)
       Примеры использования:
var a = new Array(1,2,3,4,5);
alert( a.shuffle() );
alert( ['a','b','c', [1,2,3,4,5], 'D','E','F'].shuffle(true) );//Перемешать включая вложенные массивы
*/
Array.prototype.shuffle = function( b ){
 var i = this.length, j, t;
 while( i ) {
  j = Math.floor( ( i-- ) * Math.random() );
  t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
  this[i] = this[j];
  this[j] = t;
 }
  return this;
};

function randomNumber (m,n)
{
  m = parseInt(m);
  n = parseInt(n);
  return Math.floor( Math.random() * (n - m + 1) ) + m;
}
